Gateau-Gato: Delicious Chaos was developed during Toronto Game Jam 2024. It was a 3 day jam and was created with a team of 7 people. It was shown at the Closing Speeches stream in the official ToJam server. The game can be seen on the official itch.io jam page.
One of my resposiblities for the project was implementing the core mechanic: inverting the player, enemies, and the environment!
Inverting the player was simple enough via an integer flip whenever the invert button was pressed (right-mouse button). This same boolean would handle the texture swap of the player's body.
To invert enemies, I had the enemy controller handle the enemy's state by listening to the GameManager script and getting the current invert state. But when the enemy would be defeated,
the parent where the controller is located would be destroyed and thus would stop listening. This made the enemy's corpses stop reacting to the invert state and caused some dissonance.
I fixed this issue by moving the listening part to the children, i.e., the BODY PARTS of the enemy. This way the corpse can still listen to the Game Manager and change states accordingly.
To the right you can see the hierarchy breakdown of one of the enemies. The yellow is the parent where the enemy controller is located and where the invert state used to be checked. The green
is where the invert state is now checked, and it is for each body part.
The enivornment used a similar strategy, where the geometry itself will listen for the change in invert state and perform the texture swap.
Another one of my resposiblities was handling how waves work and managed. A script called EnemySpawner handles spawning enemies and there are multiple instances of this script in the scene. This script tells the GameManager script when it has spawned a enemy and which one it spawned. The GameManager uses this information to track how many of each type of enemy in the wave it still needs to spawn, and once all of the enemies has spawned, the spawners will cease to spawn enemies and waits until the player clears the remaining enemies to start the next wave.
The game determines how many of each type of enemy should be spawned on any given wave by using an algorithm, this allows a near infinite amount of waves!